<?php
class Model_ProClasses
{
    /**
     * 提供分类数据库表操作的对象
     *
     * @var Table_Citys
     */
    var $_tbNodes;

    /**
     * 构造函数
     *
     * @return Model_CityClasses
     */
    function Model_ProClasses() {
        $this->_tbNodes =& FLEA::getSingleton('Table_Productcat');
    }

    /**
     * 取得所有类别
     *
     * @return array
     */
    function getAllClasses() {
        return $this->_tbNodes->getAllNodes();
    }

    /**
     * 取得所有顶级分类
     *
     * @return array
     */
    function getAllTopClasses() {
        return $this->_tbNodes->getAllTopNodes();
    }

    /**
     * 取得指定 ID 的分类
     *
     * @param int $classId
     *
     * @return array
     */
    function getClass($classId) {
        return $this->_tbNodes->find((int)$classId);
    }

    /**
     * 返回顶级分类到指定分类路径上的所有分类
     *
     * @param array $class
     *
     * @return array
     */
    function getSubTree($class) {
        return $this->_tbNodes->getSubTree($class);
    }

    /**
     * 取得指定分类到其顶级分类的完整路径
     *
     * @param array $class
     *
     * @return array
     */
    function getPath($class) {
        return $this->_tbNodes->getPath($class);
    }

    /**
     * 取得指定分类的所有直接子分类
     *
     * @param array $class
     *
     * @return array
     */
    function getSubClasses($class) {
        return $this->_tbNodes->getSubNodes($class);
    }

    /**
     * 创建新分类，并返回新分类的 ID
     *
     * @param array $class
     * @param int $parentId
     *
     * @return int
     */
    function createClass($class, $parentId) {
        return $this->_tbNodes->create($class, $parentId);
    }

    /**
     * 更新分类信息
     *
     * @param array $class
     *
     * @return boolean
     */
    function updateClass($class) {
        return $this->_tbNodes->update($class);
    }

    /**
     * 删除指定的分类及其子分类树
     *
     * @param array $class
     *
     * @return boolean
     */
    function removeClass($class) {
        return $this->_tbNodes->remove($class);
    }

    /**
     * 删除指定 ID 的分类及其子分类树
     *
     * @param int $classId
     *
     * @return boolean
     */
    function removeClassById($classId) {
        return $this->_tbNodes->removeByPkv($classId);
    }

    /**
     * 获取指定分类同级别的所有分类
     *
     * @param array $node
     *
     * @return array
     */
    function getCurrentLevelClasses($class) {
        return $this->_tbNodes->getCurrentLevelNodes($class);
    }

    /**
     * 计算所有子分类的总数
     *
     * @param array $class
     *
     * @return int
     */
    function calcAllChildCount($class) {
        return $this->_tbNodes->calcAllChildCount($class);
    }
}
